/**
 * 删除空的children
 * @param options 数组
 */
export function deepCleanOptions<T extends { children?: T[] }>(options: T[]): T[] {
  return options
    .map(option => {
      // 深拷贝原始对象避免污染原数据
      const newOption = {...option}

      // 递归处理子选项
      if (newOption.children?.length) {
        newOption.children = deepCleanOptions(newOption.children)
      }

      // 删除空 children 属性
      if (Array.isArray(newOption.children) && newOption.children.length === 0) {
        delete newOption.children
      }

      return newOption
    })
    // 过滤掉可能产生的空对象（按需添加）
    .filter(option => Object.keys(option).length > 0)
}
